/*
    fracgen-c : Fractal Generator (using concurrency)
    Copyright (C) 2010 Arpit Sud, Sri Teja Basava & Sidartha Gracias

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package fractal;

import util.Complex;
import complexPlane.Axes;

public abstract class Fractal
{
	/* starting axes for the fractal */
	private final Axes _axes;
	
	public Fractal(Axes axes)
	{
		if (axes == null)
			throw new IllegalArgumentException();
		
		_axes = axes;
	}
	
	public Axes axes()
	{
		return _axes;
	}
	
	/* Get name of the fractal */
	public abstract String name();
	
	/* Get values of parameters associated with the fractal */
	public abstract String[] parameters();
	
	/* Get color at input c for a colored representation */
	public abstract int getColor(Complex c);
	
	/* Get color at input c for a black & white representation */
	public abstract int getBW(Complex c);
}
